package com.zhou.cloud.config;

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

/**
 * @author zhouyongjun
 * @Description:
 * @date 2021/4/6 17:12
 */
@Configuration
public class ConfigBean {
    /**
     消费端
     给 RestTemplate 实例添加 @LoadBalanced 注解，开启 @LoadBalanced 与 Ribbon 的集成

     常用负载均衡描述
     ①RandomRule：随机选择一个服务实例
     ②RoundRobinRule：轮询负载均衡策略
     ③RetryTule：在轮询的基础上进行重试，一直重试的次数由服务连接的超时时间控制
     ④WeightedResponseTimeRule：一个服务的平均响应时间越短，则权重越大，那么改实例被选中执行任务的概率也越大
     ⑤BestAvaliableRule：过滤掉失效的服务实例，顺便找出并发最小的服务实例来使用
     ⑥ZoneAvoidanceRule：判断所在的区域，选择最近的服务调用
     ⑦NacosRule：按随机与配置的权重进行选择服务器
     */
    @LoadBalanced
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}



